Transparent optimization for transmission control protocol initial session establishment

ABSTRACT

A system and method that optimizes transmission control protocol (TCP) initial session establishment without intruding upon TCP&#39;s core algorithms. TCP&#39;s initially session establishment is accelerated by locally processing a source&#39;s initial TCP request within the source&#39;s local area network (LAN). A control module relatively near the source&#39;s local area network (LAN) and another control module relatively near a destination&#39;s LAN are utilized to complete the initial TCP session establishment within the source and the destination&#39;s respective LANs, thereby substantially eliminating the first round-trip time delay before the actual data flow begins. The first application-layer data packet thus can be transmitted at substantially the same time as the initial TCP request.

RELATED APPLICATIONS

This application claims priority from U.S. provisional application No.60/517,934 filed on Nov. 5, 2003 which is incorporated by referenceherein in its entirety.

This application is related to U.S. patent application Ser. No.10/981,900, filed on Nov. 4, 2004, entitled “Transparent Optimizationfor Transmission Control Protocol Flow Control”, the contents of whichare hereby incorporated by reference.

FIELD OF THE INVENTION

The present invention relates to the field of networking and thecommunication of data over a network and more particularly totransparent optimization for transmission control protocol (TCP) initialsession establishment.

BACKGROUND OF THE INVENTION

The transmission control protocol (TCP) is one of the most widely usedand reliable data transport protocols across communications networks.One of TCP's primary distinctions and the reasons for its widespread useis that TCP provides reliable communications. A “reliable” datatransport protocol is one that provides accurate, loss-free, and inorder delivery of data from a source to a destination. If there is anypacket loss or packet reordering during transmission of the data acrossa communications network, TCP internally corrects such an error byretransmitting the lost data and by buffering the out-of-order datauntil the missing data arrives. TCP then delivers the data to thedestination in the same initial order. Hence, by using TCP as its datatransport protocol, an application can effectively operate in abest-effort packet switched network that does not guarantee data packetdelivery. This reliable transport capability simplifies datacommunications, thus resulting in the widespread adoption of TCP.

TCP utilizes various internal algorithms to provide its capability ofreliable transport. These algorithms include initial sessionestablishment, slow start, packet reordering, packet loss detection, andnumerous other mechanisms to dynamically decrease or increase the datatransmission rate based on network conditions.

Network latency is a common problem that affects network and applicationperformance. Network latency is attributable to several factors,including physical distance, number of hops, switching and routerdelays, and network congestion. Because these factors are not constants,networks may have unpredictable latency over a period of time. Thevariation in network latency depends on the distance spanned by thenetwork link and the transmission medium used by the link. For instance,a local high-speed dedicated line between two buildings within a metroarea may experience less than 5 milliseconds (ms) of one-way latency,while a global long distance asynchronous transfer mode (ATM) linkbetween the United States and Europe may have anywhere from 50 to 250 msof one-way latency. Similarly, a satellite link typically incurs about240 to 300 ms of one-way latency, due to the time to transmit a signalup to an orbiting satellite and back.

The impact of latency on network applications may be traced directly tothe inefficiencies of TCP under conditions of network latency. Mostnetwork applications can be classified into short-transaction based“chatty” applications or long-bulk data transfer applications. Commonsources of short-transaction based network traffics include interactiveapplications (e.g., graphical or web-based user interfaces), variousdatabases, enterprise resource planning (ERP) applications, customerrelationship management (CRM) applications, etc. As users access andbrowse these applications, the applications typically generate numerousshort TCP sessions to send and receive small amounts of information thatthe application then collects and presents to the users. Though most ofthese short TCP sessions involve sending or receiving a few hundredbytes or kilobytes of data, the actual data transfer is delayed becauseof TCP's initial session establishment.

To provide reliable communications, TCP first establishes a formalsession between a source and a destination before transmitting anyapplication-layer data. TCP provides this initial session establishmentsuch that the destination does in fact receive and acknowledge thetransmitted data. Accordingly, the destination can communicate with thesource even if any data is lost. TCP's initial session establishment isbased on the source first sending a request to initiate a session andthen waiting for a response from the destination before transmitting thefirst application-layer data packet. This initial request andacknowledgment process utilizes one round-trip time (RTT). Hence, evenif the source desires to transmit a small number of application-layerdata packets across a high latency link, a portion of the totalcommunications time is wasted on the initial session establishment.Thus, the cumulative delay due to the latency on the initial sessionestablishment may decrease the end-user application performance,especially for chatty applications that established many short,serialized TCP sessions.

What is needed is a system and method for optimizing TCP's initialsession establishment to improve the performance of short, serializedTCP sessions without intruding upon TCP's core algorithms.

SUMMARY OF THE INVENTION

The present invention is a system and method for optimizing TCP'sinitial session establishment without intruding upon TCP's corealgorithms. The invention accelerates TCP's initial sessionestablishment by locally processing a source's initial TCP requestwithin the source's local area network (LAN). The present inventionutilizes a control module relatively near the source's LAN and anothercontrol module relatively near a destination's LAN to complete theinitial TCP session establishment within the source and thedestination's respective LANs, thereby substantially eliminating thefirst RTT delay before the actual data flow begins. The invention thusallows the first application-layer data packet to be transmitted atsubstantially the same time as the initial TCP request. In oneembodiment, the present invention optionally observes one or more TCPsessions between the source and the destination before accelerating theinitial session establishment. The invention observes the one or moreTCP sessions to provide a mechanism for error recovery during theoptimization process.

The features and advantages described in the specification are not allinclusive and, in particular, many additional features and advantageswill be apparent to one of ordinary skill in the art in view of thedrawings, specification, and claims. Moreover, it should be noted thatthe language used in the specification has been principally selected forreadability and instructional purposes, and may not have been selectedto delineate or circumscribe the inventive subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an illustration of one example of a network environment inwhich the present invention can operate.

FIG. 2 is a flowchart illustrating the conventional operation of TCP'sinitial session establishment.

FIG. 3 is a flowchart illustrating a method implemented by oneembodiment of the present invention for optimizing TCP's initial sessionestablishment.

FIGS. 4A and 4B are flowcharts illustrating a method implemented by oneembodiment of the invention and executed by a control module relativelynear a source to optimize TCP's initial session establishment.

FIG. 5 is a flowchart illustrating a method implemented by oneembodiment of the invention and executed by a control module relativelynear a destination to optimize TCP's initial session establishment.

DETAILED DESCRIPTION OF THE INVENTION

A preferred embodiment of the present invention is now described withreference to the figures where like reference numbers indicate identicalor functionally similar elements. Also in the figures, the left mostdigit of each reference number corresponds to the figure in which thereference number is first used.

Reference in the specification to “one embodiment” or to “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiments is included in at least oneembodiment of the invention. The appearances of the phrase “in oneembodiment” in various places in the specification are not necessarilyall referring to the same embodiment.

Some portions of the detailed description that follows are presented interms of algorithms and symbolic representations of operations on databits within a computer memory. These algorithmic descriptions andrepresentations are the means used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of steps (instructions)leading to a desired result. The steps are those requiring physicalmanipulations of physical quantities. Usually, though not necessarily,these quantities take the form of electrical, magnetic or opticalsignals capable of being stored, transferred, combined, compared andotherwise manipulated. It is convenient at times, principally forreasons of common usage, to refer to these signals as bits, values,elements, symbols, characters, terms, numbers, or the like. Furthermore,it is also convenient at times, to refer to certain arrangements ofsteps requiring physical manipulations of physical quantities as modulesor code devices, without loss of generality.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient characterizes applied to these quantities. Unlessspecifically stated otherwise as apparent from the following discussion,it is appreciated that throughout the description, discussions utilizingterms such as “processing” or “computing” or “calculating” or“determining” or “displaying” or “determining” or the like, refer to theaction and processes of a computer system, or similar electroniccomputing device, that manipulates and transforms data represented asphysical (electronic) quantities within the computer system memories orregisters or other such information storage, transmission or displaydevices.

Certain aspects of the present invention include process steps andinstructions described herein in the form of an algorithm. It should benoted that the process steps and instructions of the present inventioncould be embodied in software, firmware or hardware, and when embodiedin software, could be downloaded to reside on and be operated fromdifferent platforms used by a variety of operating systems.

The present invention also relates to an apparatus for performing theoperations herein. This apparatus may be specially constructed for therequired purposes, or it may comprise a general-purpose computerselectively activated or reconfigured by a computer program stored inthe computer. Such a computer program may be stored in a computerreadable storage medium, such as, but is not limited to, any type ofdisk including floppy disks, optical disks, CD-ROMs, magnetic-opticaldisks, read-only memories (ROMs), random access memories (RAMs), EPROMs,EEPROMs, magnetic or optical cards, application specific integratedcircuits (ASICs), or any type of media suitable for storing electronicinstructions, and each coupled to a computer system bus. Furthermore,the computers referred to in the specification may include a singleprocessor or may be architectures employing multiple processor designsfor increased computing capability.

The algorithms and displays presented herein are not inherently relatedto any particular computer or other apparatus. Various general-purposesystems may also be used with programs in accordance with the teachingsherein, or it may prove convenient to construct more specializedapparatus to perform the required method steps. The required structurefor a variety of these systems will appear from the description below.In addition, the present invention is not described with reference toany particular programming language. It will be appreciated that avariety of programming languages may be used to implement the teachingsof the present invention as described herein, and any references belowto specific languages are provided for disclosure of enablement and bestmode of the present invention.

In addition, the language used in the specification has been principallyselected for readability and instructional purposes, and may not havebeen selected to delineate or circumscribe the inventive subject matter.Accordingly, the disclosure of the present invention is intended to beillustrative, but not limiting, of the scope of the invention, which isset forth in the following claims.

FIG. 1 is an illustration of one example of a network environment inwhich the present invention can operate. A source 102 can be any devicethat sends/receives data to/from one or more endpoints using TCP. Forillustration purposes, source 102 as described hereinafter is any devicethat can request a TCP session. Source 102 is connected to a controlmodule 104 (e.g., in a control device) via a communications network,such as a LAN 106. Alternatively, control module 104 is directlyconnected to the source 102 without via the LAN 106 or is implementedwithin source 102 as a program module. Control module 104 is connectedto one or more other control modules via another communications networksuch as a wide area network (WAN) 108. Even though FIG. 1 shows thatcontrol module 104 is connected to one other control module (i.e., thecontrol module 110), control module 104 can be connected to more thanone control module. Each of the other control modules is connected to adestination via yet another communications network. For example, FIG. 1shows that control module 110 (e.g., in a control device) is connectedto a destination 112 via a LAN 114. The destination 112 can be anydevice that receives/sends data from/to one or more endpoints using TCP.For illustration purposes, destination 112 as described hereinafter isany device that can respond to the TCP request sent by source 102.Moreover, control module 110 can be directly connected to destination112 without via the LAN 114 or can be implemented within destination 112as a program module.

In one embodiment of the invention, control module 104 is locatedrelatively nearer to source 102 than to destination 112, while controlmodule 110 is located relatively nearer to destination 112 than tosource 102. Accordingly, control module 104 is physically and logicallyassociated with source 102, and control module 110 is physically andlogically associated with destination 112.

As discussed, TCP's initial session establishment that requires thefirst application-layer data packet to be sent after the initializationis complete may delay the TCP transaction between source 102 anddestination 112. This process introduces at least one RTT of delay pertransaction, which in the case of a high latency link may amount to 500to 1000 ms of delay. When many of these short transactions are seriallyexecuted, the cumulative delay from this initialization process may besignificant. Thus, in an embodiment of the invention, control module 104and control module 110 cooperate to predictably and reliably completethe initial TCP session establishment within the respective LANs ofsource 102 and destination 112. Control module 104 and control module110 provide an optimization that is non-intrusive and transparent toTCP. That is, control modules 104 and 110 operate transparently to TCP'send-to-end reliability algorithms and avoid the complexities and risksof replacing TCP as the transmission protocol. Control modules 104 and110 do not generate any acknowledgment for data that has not actuallybeen received and instead use an existing acknowledgment to optimize thedata flow. Accordingly, TCP's reliability protocols continue to operateend-to-end as if control modules 104 and 110 do not exist. The presentinvention thus non-intrusively improves TCP's latency performance byoptimizing TCP's initial session establishment.

FIG. 2 illustrates the conventional operation of TCP's initial sessionestablishment without control modules 104 and 110. At A, source 102first sends a special TCP packet to destination 112. This special packetincludes no application-layer data. It does, however, have one of theflag bits in the packet's header, called the synchronization (SYN) bit,set to TRUE. This special packet is often referred to as a SYN packet.Furthermore, source 102 selects an initial sequence number calledsource_isn and inserts this value in the initial SYN packet's sequencenumber field. Source 102 encapsulates this SYN packet within an internetprotocol (IP) datagram and sends it to destination 112.

At B, after the IP datagram including the SYN packet arrives atdestination 112, destination 112 extracts the SYN packet from the IPdatagram, allocates the TCP buffers and variables to the connection, andsends a TCP connection-granted packet to source 102. Thisconnection-granted packet also includes no application-layer data.However, the SYN bit in the packet header is set to TRUE. Destination112 also sets the ACK bit in the packet header and the acknowledgmentfield of the connection-granted packet header to source_isn+1. Moreover,destination 112 selects its own initial sequence number calleddestination_isn and inserts this value in the sequence number field ofthe connection-granted packet header. The connection-granted packet isoften referred to as a synchronization-acknowledgment (SYN-ACK) packet.

At C, after receiving the connection-granted packet, source 102allocates buffers and variables to the connection. Source 102 then sendsyet another packet to destination 112. This packet acknowledges theconnection-granted packet of destination 112. Specifically, source 102inserts the value destination_isn+1 in the acknowledgment field of theTCP packet header. Source 102 also sets the TCP packet header's SYN bitto FALSE, since the TCP connection is established.

After steps A–C have been completed, source 102 and destination 112 cansend packets including application-layer data to each other. In each ofthese future packets, the SYN bit is set to FALSE.

As can be seen, three packets are sent between source 102 anddestination 112 to establish an initial TCP session between source 102and destination 112. Thus, this session establishment procedure is oftenreferred to as a “three-way handshake.” Even though the TCP three-wayhandshake provides reliable delivery of data, source 102 is required toreceive the SYN-ACK packet from destination 112 before it can begin totransmit application-layer data to destination 112, and destination 112is required to receive the last packet of the three-way handshake beforeit can begin to transmit application-layer data to source 102. Thisrequirement delays the application-layer data transmission, especiallyfor multiple short TCP transactions that are serially executed.

FIG. 3 illustrates an exemplary operation of TCP's initial sessionestablishment optimized by control modules 104 and 110 according to anembodiment of the invention. According to a preferred embodiment of theinvention, before optimizing TCP's initial session establishment,control module 104 associated with source 102 gathers information aboutdestination 112 and stores this information in a database. Asillustrated, at A, control module 104 first allows source 102 toestablish one or more TCP sessions with destination 112. Even thoughcontrol modules 104 and 110 do not interfere with such TCP sessions,control module 104 observes the responses of destination 112 to the SYNpackets sent by source 102. Control module 104 further observes anetwork address such as the IP address of destination 112. Particularly,control module 104 observes one or more responses of destination 112 toa SYN packet to determine the TCP options used in response to the TCPoptions in the SYN packet for the IP address of destination 112. Controlmodule 104 then stores the responses of destination 112 having differentcombinations of TCP options in a database maintained by control module104. The responses are stored in the database in a per IP address, perTCP option combination manner. After control module 104 observes asufficient number (e.g., 5) of TCP sessions between source 102 anddestination 112 having a specific TCP option combination, and if theresponses from destination 112 are consistent, then control module 104“activates” the IP address and the specific TCP option combination ofdestination 112.

After control module 104 activates the IP address and TCP optioncombination of destination 112, source 102 sends a SYN packet todestination 112 at B. Control module 104 intercepts this SYN packet and,at C, responds to source 102 with a synthesized SYN-ACK packet havingthe IP address, port number, and TCP option combination of destination112 as indicated in the database. Control module 104 also predictably orarbitrarily decides an initial sequence number (called synth_isn) andinserts this value in the sequence number field of the SYN-ACK packetheader. At D, source 102 responds to the synthesized SYN-ACK packet sentby control module 104 with an acknowledgment (ACK) packet and putsitself into a session-established state. Source 102 then commencesapplication-layer data transmission. Moreover, control module 104characterizes the ACK packet and sends it to destination 112.

After control module 104 intercepts the SYN packet sent from source 102to destination 112, it characterizes this SYN packet and inserts thesynth_isn into the TCP header or the characterized SYN packet header,either as an unused TCP option or in the acknowledgment number field, oras additional data that is sent along with the packet. Control module104 then sends the characterized SYN packet to destination 112 at E.During the time beginning when source 102 puts itself in thesession-established state until source 102 receives information thatdestination 112 is also in the session-established state, control module104 will characterize any data packet from source 102 to destination112. Control module 104 characterizes a SYN packet or data packet byusing one or more fields available in the TCP header or by adding datato the packet.

Before the characterized SYN packet reaches destination 112, controlmodule 110 associated with destination 112 intercepts this characterizedSYN packet. Control module 110 removes the characterization and findsout the synth_isn from the SYN packet. For example, control module 110may find out an arbitrarily decided synth_isn based on what is includedin the TCP header, the characterized SYN packet header, or theadditional data being sent along with the packet. However, if thesynth_isn was predictably decided by control module 104, control module110 may use the same prediction method to derive the synth_isn after itdetermines that the SYN packet header is “characterized.” Control module110 then sends the characterization-free SYN packet to destination 112at F.

Before control module 110 receives a SYN-ACK packet from destination112, it may receive the characterized ACK packet from source 102 at G.In this case, control module 110 temporarily stores this characterizedACK packet in a memory area while waiting for the SYN-ACK packet fromdestination 112.

When destination 112 sends the SYN-ACK packet to source 102 at H,control module 110 intercepts this SYN-ACK packet. From the SYN-ACKpacket, control module 110 learns the initial sequence number used bydestination 114 (referred to as destination_isn) and then sends theSYN-ACK packet to source 102. Control module 110 then adjusts thetemporarily stored ACK packet from source 102 to destination 112 basedon the destination_isn.

In a preferred embodiment of the invention, control module 110 adjuststhe ACK packet by computing an adjustment number calledSeqAckAdjustment. For example, the SeqAckAdjustment can be computed bysubtracting the destination_isn from the synth_isn. Accordingly, aftercontrol module 110 computes the SeqAckAdjustment, control module 110releases the ACK packet that is temporarily stored in the memory area.Specifically, control module 110 removes the characterization from theACK packet and adjusts the packet using the computed SeqAckAdjustment,for example, by subtracting the computed SeqAckAdjustment from the ACKpacket's acknowledgment number and making a corresponding adjustment tothe ACK packet's checksum. Control module 110 then sends the adjustedACK packet to destination 112 at I.

In addition, if control module 110 receives a characterized data packetfrom source 102 before it receives the SYN-ACK packet from destination112 (e.g., at J), it temporarily stores the characterized data packet.After the SYN-ACK packet arrives from destination 112, control module110 removes the characterization from the data packet, adjusts the datapacket (e.g., by subtracting the computed SeqAckAdjustment from the datapacket's acknowledgment number and making a corresponding adjustment tothe data packet's checksum), and sends the adjusted data packet todestination 112 at K. For subsequent characterized data packets arrivingfrom source 102, control module 110 removes the characterization fromthe data packets, adjusts the data packets, and sends the adjusted datapackets to destination 112.

According to an embodiment of the invention, if the SYN packetcharacterized by control module 104 is lost before it reaches controlmodule 110, control module 110 may recover the information included inthis lost SYN packet from a subsequent data packet arriving from controlmodule 104 (e.g., at J). Accordingly, control module 110 can recover thelost information, recreate the SYN packet, and send the recreated SYNpacket to destination 112. This operation also applies if the SYN packetreaches control module 110 after the data packet arrives at controlmodule 110. Furthermore, if the SYN packet is lost on its way fromcontrol module 110 to destination 112, control module 110 can use theinformation included in the subsequent data packet to recreate anotherSYN packet and send the recreated SYN packet to destination 112.

In another embodiment of the invention, if the SYN-ACK packet fromdestination 112 is lost on its way to control module 110, control module110 recreates the SYN packet based on the information included in thesubsequent data packet (e.g., that arrives at J). Control module 110then sends the recreated SYN packet to destination 112 for destination112 to transmit another SYN-ACK packet.

Before the SYN-ACK packet from destination 112 arrives at control module104 associated with source 102, control module 104 may receive a datapacket from destination 112 before it receives the SYN-ACK packet fromdestination 112. In this case, control module 104 temporarily storesthis data packet in a memory area.

At L, control module 104 receives the SYN-ACK packet from destination112. From the received SYN-ACK packet, control module 104 learns thedestination_isn and adjusts the temporarily stored data packets andsubsequent data packets between source 102 and destination 112 based onthe destination_isn. Control module 104 also examines the SYN-ACK packetto determine if it was formed as suggested in the database. If controlmodule 104 determines that the SYN-ACK packet was not formed assuggested in the database (e.g., the IP address and/or the TCP optioncombination are different), then it “deactivates” destination 112 in thedatabase and then observes subsequent regular TCP sessions betweensource 102 and destination 112 (without interference from controlmodules 104 and 110) to determine the correct information aboutdestination 112.

In any case, control module 104 consumes the SYN-ACK packet and does notsend the SYN-ACK packet to source 102.

In an embodiment of the invention, if the SYN-ACK packet fromdestination 112 is lost on its way from control module 110 to controlmodule 104, control module 104 can detect this loss because a datapacket from destination 112 reaches control module 104 before theSYN-ACK packet arrives at control module 104. In this case, controlmodule 104 uses an out-of-band TCP channel to control module 110 torequest the value of the SeqAckAdjustment in order for it to adjust thedata packet. Alternatively, control module 104 can use the out-of-bandTCP channel to explicitly request control module 110 to retransmit theSYN-ACK packet.

According to a preferred embodiment of the invention, control module 104adjusts the data packets from destination 112 to source 102 by computingthe SeqAckAdjustment. The SeqAckAdjustment may be computed bysubtracting the destination_isn from the synth_isn. Therefore, aftercontrol module 104 computes the SeqAckAdjustment, it adjusts andreleases the data packet that is temporarily stored in the memory area.For example, control module 104 adjusts the stored data packets byadding the computed SeqAckAdjustment to the data packet's sequencenumber and making a corresponding adjustment to the data packet'schecksum. Control module 104 then sends the adjusted data packet tosource 102. In addition, if control module 104 receives a data packetfrom destination 112, for example, at M, it adjusts the received datapacket by, for example, adding the computed SeqAckAdjustment to the datapacket's sequence number and making a corresponding adjustment to thedata packet's checksum. Control module 104 then sends the adjusted datapacket to source 102 at N.

In addition, after control module 104 computes the SeqAckAdjustment andreceives a data packet from source 102, for example, at O, it adjuststhe received data packet by, for example, subtracting the computedSeqAckAdjustment from the data packet's acknowledgment number and makinga corresponding adjustment to the data packet's checksum. Control module104 then sends the adjusted data packet to destination 112 at P withoutany characterizing. Since this data packet is not characterized, controlmodule 110 does not intercept the data packet on its way to destination112. Thus, the characterization-free data packet is directly transmittedto destination 112 without any interference from control module 110.From this point on, normal TCP transaction may continue without furtherinvolvements from control module 110. For the rest of the packets inthis TCP transaction, processing of the sequence number for packetsgoing from destination 112 to source 102 (e.g., at Q and R) and of theacknowledgment numbers for packets going from source 102 to destination112 (e.g., at O and P) will be done by control module 104.

As can be seen, by intercepting the SYN packet from source 102 andsending the synthesized SYN-ACK packet to source 102 in response to theSYN packet, control module 104 allows source 102 to begin transmittingapplication-layer data to destination 112 without waiting for the realSYN-ACK packet from destination 112. This speeds up TCP's initialsession establishment, especially for multiple short TCP transactionsthat are serially executed. By having control module 110 cooperatingwith control module 104, embodiments of the invention optimize TCP'sinitial session establishment without intruding upon TCP's corealgorithms.

FIGS. 4A and 4B are flowcharts illustrating a TCP optimization routinethat is implemented by one embodiment of the present invention andexecuted by control module 104 associated with source 102. In apreferred embodiment of the invention, control module 104 observes oneor more responses of destination 112 to a SYN packet to determine theTCP options used in response to the TCP options in the SYN packet forthe IP address of destination 112. Control module 104 thus determinesthe IP address and TCP option combination of destination 112 based onthe observed responses. Control module 104 then determines 404 if the IPaddress and TCP option combination of destination 112 have beenconsistent. If the IP address and TCP option combination have beenconsistent, control module 104 activates 406 the IP address and TCPoption combination of destination 112. If the IP address and TCP optioncombination have not been consistent, control module 104 returns to step402 to observe further responses of destination 112 to SYN packets sentby source 102.

Control module 104 receives 408 a SYN packet from source 102. Based onthe received SYN packet, control module 104 generates a synthesizedSYN-ACK packet having the IP address, port number, and TCP optioncombination of destination 112. Control module 104 also predictably orarbitrarily decides an initial sequence number called synth_isn andinserts the synth_isn into the synthesized SYN-ACK. Control module 104then sends the synthesized SYN-ACK to source 102. Control module 104further characterizes the SYN packet received from source 102 and sendsthe characterized SYN packet to destination 112.

After control module 104 sends the synthesized SYN-ACK to source 102, itreceives 410 an ACK packet from source 102, characterizes the ACKpacket, and sends the characterized ACK packet to destination 112.Control module 104 then determines 412 if a data packet arrives fromsource 102. If a data packet arrives from source 102, control module 104characterizes 414 the data packet received from source 102 and sends thecharacterized data packet to destination 112. After control module 104sends the characterized data packet to destination 112 or if a datapacket does not arrive from source 102, control module 104 determines416 if a data packet arrives from destination 112. If a data packetarrives from destination 112, control module 104 stores 418 the datapacket received from destination 112.

After control module 104 stores the data packet received fromdestination 112 or if a data packet does not arrive from destination112, control module 104 receives 420 a SYN-ACK packet from destination112. Control module 104 finds out the sequence number of destination 112(referred to as destination_isn) from the received SYN-ACK packet. In apreferred embodiment of the invention, control module 104 also computesan adjustment number called SeqAckAdjustment by, for example,subtracting the destination_isn from the synth_isn. Control module 104also consumes 422 the SYN-ACK packet to prevent it from reaching source102. Control module 104 further determines 424 if the SYN-ACK packet wasformed as expected (i.e., it is consistent with the determined IPaddress and TCP option combination of destination 112). If the SYN-ACKpacket was not formed as expected, control module 104 deactivates the IPaddress and TCP option combination of destination 112 and returns tostep 402 to observe further responses of destination 112 to SYN packetssent by source 102.

If the SYN-ACK packet was formed as expected, control module 104 sends426 the stored data packet, if any, to source 102 after adjusting thedata packet. For example, control module 104 can adjust the data packetby adding the SeqAckAdjustment to the data packet's sequence number andmaking a corresponding adjustment to the data packet's checksum. Controlmodule 104 then determines 428 if a data packet arrives from destination112. If a data packet arrives from destination 112, control module 104sends 430 the data packet to source 102 after adjusting the data packet.Control module 104 can adjust the data packet by, for example, addingthe SeqAckAdjustment to the data packet's sequence number and making acorresponding adjustment to the data packet's checksum. Control module104 then determines 432 if a data packet arrives from source 102.

If a data packet does not arrive from destination 112, control module104 also determines 432 if a data packet arrives from source 102. If adata packet arrives from source 102, control module 104 sends 434 thedata packet to destination 112 without any characterizing afteradjusting the data packet. The data packet can be adjusted, for example,by subtracting the SeqAckAdjustment from the data packet'sacknowledgment number and making a corresponding adjustment to the datapacket's checksum. Control module 104 then returns to step 428 todetermine if a data packet arrives from destination 112. Alternatively,if a data packet does not arrive from source 102, control module 104also returns to step 428 to determine if a data packet arrives fromdestination 112. The process flow continues until either source 102 ordestination 112 terminates the TCP session.

FIG. 5 is a flowchart illustrating a TCP optimization routine that isimplemented by one embodiment of the present invention and executed bycontrol module 110 associated with destination 112. Control module 110receives 502 a characterized SYN packet from source 102. Control module110 removes the characterization from the SYN packet and sends thecharacterization-free SYN packet to destination 112. Control module 110then determines 504 if a characterized ACK packet arrives from source102. If a characterized ACK packet arrives from source 102, controlmodule 110 stores 506 the ACK packet arrived from source 102.

After control module 110 stores the ACK packet received from source 102,control module 110 receives 508 a SYN-ACK packet from destination 112.Control module 110 finds out the destination_isn from the receivedSYN-ACK packet and sends the SYN-ACK to source 102. In a preferredembodiment of the invention, control module 110 computes an adjustmentnumber called SeqAckAdjustment by, for example, subtracting thedestination_isn from the synth_isn.

Control module 110 also sends 510 the stored ACK packet, if any, todestination 112 after adjusting the ACK packet and removing thecharacterization from the ACK packet. For example, control module 110can adjust the ACK packet by subtracting the SeqAckAdjustment from theACK packet's acknowledgment number and making a corresponding adjustmentto the ACK packet's checksum.

Control module 110 further determines 512 if a characterized data packetarrives from source 102. If a characterized data packet arrives fromsource 102, control module 110 removes 514 the characterization from thedata packet, adjusts the data packet, and sends thecharacterization-free data packet to destination 112. The data packetcan be adjusted, for example, by subtracting the SeqAckAdjustment fromthe data packet's acknowledgment number and making a correspondingadjustment to the data packet's checksum. The process then returns tostep 512. If a characterized data packet does not arrive from source102, control module 110 loops back to step 512 until source 102 ordestination 112 terminates the TCP session.

While particular embodiments and applications of the present inventionhave been illustrated and described herein, it is to be understood thatthe invention is not limited to the precise construction and componentsdisclosed herein and that various modifications, changes, and variationsmay be made in the arrangement, operation, and details of the methodsand apparatuses of the present invention without departing from thespirit and scope of the invention as it is defined in the appendedclaims.

1. A method for optimizing an initial transmission control protocol(TCP) session establishment between a source and a destinationcomprising: receiving a synchronization packet from the source at afirst intermediate location associated with the source; in response tothe received synchronization packet, generating a synthesizedsynchronization-acknowledgment packet including information of thedestination at the first intermediate location; sending the synthesizedsynchronization-acknowledgment packet from the first intermediatelocation to the source; and sending the received synchronization packetfrom the first intermediate location to the destination prior toreceiving an acknowledgement packet from the source at the firstintermediate location.
 2. The method of claim 1, wherein sending thesynchronization packet from the first intermediate location to thedestination comprises: characterizing the received synchronizationpacket for processing prior to receipt at the destination; and sendingthe characterized synchronization packet from the first intermediatelocation to the destination.
 3. The method of claim 2, furthercomprising: receiving, at the first intermediate location, theacknowledgement packet from the source; receiving, at the firstintermediate location, a data packet from the source before receiving asynchronization-acknowledgement packet from the destination; based onreceipt of the acknowledgment packet and the data packet from the sourceprior to receipt of the synchronization-acknowledgement packet from thedestination, characterizing the received data packet for processingprior to receipt by the destination; and sending the characterized datapacket from the first intermediate location to the destination.
 4. Themethod of claim 1, wherein the information of the destination includes anetwork address, a TCP option combination, and a synthesized sequencenumber of the destination.
 5. The method of claim 3, further comprising:receiving, at a second intermediate location associated with thedestination, the characterized synchronization packet; removing thecharacterization from the received synchronization packet at the secondintermediate location; and sending the synchronization packet withoutthe characterization from the second intermediate location to thedestination.
 6. The method of claim 5, further comprising: receiving, atthe second intermediate location, the characterized data packet from thefirst intermediate location before receiving asynchronization-acknowledgement packet from the destination; storing thecharacterized data packet at the second intermediate location;receiving, at the second intermediate location, thesynchronization-acknowledgement packet from the destination; removingthe characterization from the stored data packet; determining anadjustment number based on the received synchronization-acknowledgmentpacket; adjusting the data packet as a function of the determinedadjustment number; and sending the adjusted data packet without thecharacterization from the second intermediate location to thedestination.
 7. The method of claim 6, wherein determining theadjustment number comprises: identifying a sequence number used by thedestination based on the received synchronization-acknowledgementpacket; and subtracting the identified sequence number used by thedestination from a synthesized sequence number selected by theintermediate location associated with the source.
 8. The method of claim6, wherein adjusting the data packet comprises: subtracting thedetermined adjustment number from an acknowledgement number of the datapacket.
 9. The method of claim 5, further comprising: receiving, at thesecond intermediate location, a synchronization-acknowledgment packetfrom the destination; determining an adjustment number based on thereceived synchronization-acknowledgment packet; receiving, at the secondintermediate location, a data packet from the source; adjusting thereceived data packet by subtracting the determined adjustment numberfrom an acknowledgment number of the data packet; and sending theadjusted data packet from the second intermediate location to thedestination.
 10. The method of claim 5, further comprising: receiving,at the second intermediate location, a data packet from the destinationbefore receiving a synchronization-acknowledgment packet from thedestination; storing the received data packet at the second intermediatelocation; receiving, at the second intermediate location, thesynchronization-acknowledgment packet from the destination; determiningan adjustment number based on the receivedsynchronization-acknowledgment packet; adjusting the stored data packetby adding the determined adjustment number to a sequence number of thedata packet; and sending the adjusted data packet from the secondintermediate location to die source.
 11. The method of claim 5, furthercomprising: receiving, at the second intermediate location, asynchronization-acknowledgment packet from the destination; determiningan adjustment number based on the receivedsynchronization-acknowledgment packet; receiving, at the secondintermediate location, a data packet from the source; adjusting thereceived data packet by subtracting the determined adjustment numberfrom an acknowledgment number of the data packet; sending the adjusteddata packet from the second intermediate location to the destination.12. The method of claim 5, further comprising: receiving, at the secondintermediate location, a synchronization-acknowledgment packet from thedestination; determining an adjustment number bused on the receivedsynchronization-acknowledgment packet; receiving, at the secondintermediate location, a data packet from the destination; adjusting thereceived data packet by adding the determined adjustment number to asequence number of the data packet; sending the adjusted data packetfrom the second intermediate location to the source.
 13. The method ofclaim 1, further comprising: observing at the first intermediatelocation, before generating the synthesizedsynchronization-acknowledgement packet, one or more responses of thedestination to one or more synchronization packets sent by the source tothe destination; identifying one or more network addresses and TCPoption combinations from the responses of the destination; storing theidentified one or more network addresses and TCP option combinations ina database; and determining if the stored one or more network addressesand TCP option combinations are consistent; and allowing the generationof the synthesized synchronization-acknowledgement packet if the storedone or more network addresses and TCP option combinations areconsistent.
 14. The method of claim 13, further comprising: receiving asynchronization-acknowledgment packet from the destination at the firstintermediate location after generating the synthesizedsynchronization-acknowledgment packet; determining if the destination'snetwork address and TCP option combination as indicated in the receivedsynchronization-acknowledgment packet are consistent with the one ormore network addresses and TCP option combinations stored in thedatabase; and observing one or more further responses of the destinationto one or more further synchronization packets sent by the source todetermine a correct network address and TCP option combination of thedestination.
 15. A system for optimizing an initial transmission controlprotocol (TCP) session establishment between a source and a destinationcomprising: a first intermediate control module associated with thesource for: receiving a synchronization packet from the source;generating a synthesized synchronization-acknowledgment packet includinginformation of the destination in response to the receivedsynchronization packet; sending the synthesizedsynchronization-acknowledgment packet to the source; and sending thesynchronization packet to the destination prior to receiving anacknowledgment packet from the source.
 16. The system of claim 15,wherein, before sending the synchronization packet to the destination,the first intermediate control module characterizes the synchronizationpacket for processing prior to receipt at the destination.
 17. Thesystem of claim 16, wherein the first intermediate control module:receives a data packet from the source before receiving asynchronization-acknowledgment packet from the destination; based onreceipt of the data packet before the synchronization-acknowledgmentpacket, characterizes the received data packet for processing prior toreceipt by the destination; and sends the characterized data packet tothe destination.
 18. The system of claim 15, wherein the information ofthe destination includes a network address, a TCP option combination,and a synthesized sequence number of the destination.
 19. The system ofclaim 17, further comprising: a second intermediate control moduleassociated with the destination for: receiving the characterizedsynchronization packet from the first intermediate control module;removing the characterization of the received synchronization packet;and sending the synchronization packet to the destination without thecharacterization.
 20. The system of claim 19, wherein the secondintermediate control module: receives the characterized data packet fromthe first intermediate control module before receiving asynchronization-acknowledgment packet from the destination; stores thecharacterized data packet; receives the synchronization-acknowledgmentpacket from the destination; removes the characterization from thestored data packet; determines an adjustment number based on thereceived synchronization-acknowledgment packet; adjusts the data packetas a function of the determined adjustment number; and sends theadjusted data packet without the characterization to the destination.21. The system of claim 20, wherein the second intermediate controlmodule determines the adjustment number by: identifying a sequencenumber used by the destination based on the receivedsynchronization-acknowledgment packet; and subtracting the identifiedsequence number used by the destination from a synthesized sequencenumber selected by the first intermediate control module.
 22. The systemof claim 20, wherein the second intermediate control module adjusts thedata packet by: subtracting the determined adjustment number from anacknowledgment number of the data packet.
 23. The system of claim 19,wherein the second intermediate control module: receives asynchronization-acknowledgment packet from the destination; determinesan adjustment number based on the receivedsynchronization-acknowledgment packet; receives a data packet from thesource; adjusts the received data packet by subtracting the determinedadjustment number from an acknowledgment number of the data packet; andsends the adjusted data packet to the destination.
 24. The system ofclaim 19, wherein the first intermediate control module: receives a datapacket from the destination before receiving asynchronization-acknowledgment packet from the destination; stores thereceived data packet; receives the synchronization-acknowledgment packetfrom the destination; determines an adjustment number based on thereceived synchronization-acknowledgment packet; adjusts the stored datapacket by adding the determined adjustment number to a sequence numberof the data packet; and sends the adjusted data packet to the source.25. The system of claim 19, wherein the first intermediate controlmodule: receives a synchronization-acknowledgment packet from thedestination; determines an adjustment number based on the receivedsynchronization-acknowledgment packet; receives a data packet from thesource; adjusts the received data packet by subtracting the determinedadjustment number from an acknowledgment number of the data packet;sends the adjusted data packet to the destination.
 26. The system ofclaim 19, wherein the first intermediate control module: receives asynchronization-acknowledgment packet from the destination; determinesand adjustment number based on the receivedsynchronization-acknowledgment packet; receives a data packet from thedestination; adjusts the received data packet by adding the determinedadjustment number to a sequence number of the data packet; sends theadjusted data packet to the source.
 27. The system of claim 15, whereinthe first intermediate control module: observes, before generating thesynthesized synchronization-acknowledgment packet, one or more responsesof the destination to one or more synchronization packets sent by thesource to the destination; identifies one or more network addresses andTCP option combinations from the responses of the destination; storesthe identified one or more network addresses and TCP option combinationsin a database; and determines if the stored one or more networkaddresses and TCP option combinations are consistent; and allows thegeneration of the synthesized synchronization-acknowledgment packet ifthe stored one or more network addresses and TCP option combinations arcconsistent.
 28. The system of claim 27, wherein the first intermediatecontrol module; receives a synchronization-acknowledgment packet fromthe destination after generating the synthesizedsynchronization-acknowledgment packet; determines if the destination'snetwork address and TCP option combination as indicated in the receivedsynchronization-acknowledgment packet are consistent with the one ormore network addresses and TCP option combinations stored in thedatabase; and observes one or more further responses of the destinationto one or more further synchronization packets sent by the source todetermine a correct network address and TCP option combination of thedestination.
 29. A system for accelerating an initial transmissioncontrol protocol (TCP) session establishment between a source and adestination comprising: a first intermediate control module associatedwith the source that: receives a synchronization packet from the source,in response to the received synchronization packet, generates asynthesized synchronization-acknowledgement packet including informationof the destination, sends the synthesizedsynchronization-acknowledgement packet to the source, characterizes thesynchronization packet received from the source for processing prior toreceipt at the destination, and sends the characterized synchronizationpacket to the destination prior to receiving an acknowledgement packetfrom the source; and a second intermediate control module associatedwith the destination that: intercepts the characterized synchronizationpacket, removes the characterization from the synchronization packet,and sends the synchronization packet without the characterization to thedestination.
 30. The system of claim 29, wherein the first intermediatecontrol module: receives the acknowledgment packet from the source,receives a data packet from the source before receiving asynchronization-acknowledgement packet from the destination, based onreceipt of the acknowledgment packet and data packet from the sourcebefore receipt of the synchronization-acknowledgment packet from thedestination, characterizes the received data packet for processing priorto receipt by the destination, and sends the characterized data packetto the destination, and wherein the second intermediate control module:intercepts the characterized data packet from first intermediate controlmodule before receiving a synchronization-acknowledgment packet from thedestination; stores the characterized data packet; receives thesynchronization-acknowledgment packet from the destination; removes thecharacterization from the stored data packet; determines an adjustmentnumber based on the received synchronization-acknowledgment packet;adjusts the data packet as a function of the determined adjustmentnumber; and sends the adjusted data packet without the characterizationto the destination.